package com.ruoyi.ldzlsb.service;

import java.util.List;
import java.util.Map;
import com.ruoyi.ldzlsb.domain.SbEquipmentStatusLog;

/**
 * 设备状态日志Service接口
 */
public interface ISbEquipmentStatusLogService {
    /**
     * 查询设备状态日志列表
     * 
     * @param sbEquipmentStatusLog 设备状态日志
     * @return 设备状态日志集合
     */
    List<SbEquipmentStatusLog> selectSbEquipmentStatusLogList(SbEquipmentStatusLog sbEquipmentStatusLog);

    /**
     * 查询设备状态日志详细
     * 
     * @param logId 设备状态日志ID
     * @return 设备状态日志
     */
    SbEquipmentStatusLog selectSbEquipmentStatusLogById(Long logId);

    /**
     * 新增设备状态日志
     * 
     * @param sbEquipmentStatusLog 设备状态日志
     * @return 结果
     */
    int insertSbEquipmentStatusLog(SbEquipmentStatusLog sbEquipmentStatusLog);

    /**
     * 修改设备状态日志
     * 
     * @param sbEquipmentStatusLog 设备状态日志
     * @return 结果
     */
    int updateSbEquipmentStatusLog(SbEquipmentStatusLog sbEquipmentStatusLog);

    /**
     * 批量删除设备状态日志
     * 
     * @param logIds 需要删除的设备状态日志ID
     * @return 结果
     */
    int deleteSbEquipmentStatusLogByIds(Long[] logIds);

    /**
     * 删除设备状态日志信息
     * 
     * @param logId 设备状态日志ID
     * @return 结果
     */
    int deleteSbEquipmentStatusLogById(Long logId);
    
    /**
     * 查询设备状态变更历史
     * 
     * @param equipmentId 设备ID
     * @return 状态变更历史列表
     */
    List<SbEquipmentStatusLog> selectSbEquipmentStatusLogsByEquipmentId(Long equipmentId);
    
    /**
     * 获取设备状态统计数据
     * 
     * @return 设备状态统计数据
     */
    Map<String, Object> getEquipmentStatusStatistics();
    
    /**
     * 获取每月设备状态变更统计
     * 
     * @param year 年份
     * @return 每月状态变更统计数据
     */
    Map<String, Object> getEquipmentStatusChangeByMonth(Integer year);
} 